// 导入axios库，用于发送HTTP请求
import axios from "axios";
import router from "@/router";


// 创建一个axios实例，配置基础URL和请求超时时间
const request = axios.create({
    baseURL: "http://localhost:9090", // 设置基础URL
    timeout: 30000 // 设置请求超时时间为30秒
})

// 请求拦截器，在请求发送前对请求进行处理
request.interceptors.request.use(config => {
    config.headers['Content-Type'] = 'application/json;charset=UTF-8'; // 设置请求头Content-Type为JSON格式
    let user = JSON.parse(localStorage.getItem("honey-user") || '{}')
    config.headers['token'] = user.token
    return config; // 返回处理后的请求配置

}, error => {
    console.error('request error' + error); // 请求错误处理，打印错误信息
    return Promise.reject(error); // 返回一个被拒绝的Promise对象
});

// 响应拦截器，在接收到响应后对响应进行处理
request.interceptors.response.use(response => {
    let res = response.data; // 获取响应数据

    // 如果响应数据是字符串类型，则尝试将其解析为JSON对象
    if (typeof res == 'string') {
        res = res ? JSON.parse(res) : res;
    }
    // 如果验证失败，就返回登录
    if (res.code === '401') {
        router.push('/login')
    }
    return res; // 返回处理后的响应数据
}, error => {
    console.error('response error' + error); // 响应错误处理，打印错误信息
    return Promise.reject(error); // 返回一个被拒绝的Promise对象
});


// 导出创建的 axios 实例，供其他模块使用
export default request;